Пример работы со входами/выходами GPIO различных устройств с помощью драйвера командной строки (drv_cmd) и драйвера MQTT (drv_mqtt). Предполагается, что переменные добавляются в уже существующий прототип, а также что уже создан узел с данным прототипом (см. Простейший проект)
Чтение и запись входов/выходов роутера Teleofis RTU1068
Чтение показания датчика на шине 1wire контроллера JetHome
Чтение и изменение выходов A1 - A4 контроллера Wiren Board 7.4
В прототипе, на вкладке CMD, заводим переменную драйвера командной строки
Заполняем следующие поля:
Формат: Число
Команда чтения: cat /dev/pd0/value
Команда записи:
echo out > /dev/pd0/direction
echo %value% > /dev/pd0/value
Сохраняем прототип, выполняем сборку
Теперь в значение переменной считывается значение пина pd0, а при изменении значения переменной оно записывается в пин pd0:
echo out > /dev/pd0/direction - переключает пин на выходecho %value% > /dev/pd0/value - устанавливает 1 или 0 на пинеВ прототипе, на вкладке CMD, заводим переменную драйвера командной строки
Заполняем следующие поля:
Число(cat /sys/bus/w1/devices/28-0319a27910bf/w1_slave | grep "t=" | cut -d "=" -f2)Сохраняем прототип, выполняем сборку
Здесь мы читаем значение датчика с ID 28-0319a27910bf
Пример актуален для прошивки 7.4.
Выходы A1 - A4 имеют два состояния:
1 - включен (контакт замкнут на GND)0 - отключен (контакт разомкнут, может использоваться как аналоговый вход)Состояние выходов A1 - A4 считывается через следующие MQTT-топики:
/devices/wb-adc/controls/A<N> - аналоговое измеренное напряжения на входе/devices/wb-gpio/controls/A<N>_IN - дискретное измеренное напряжения на входе (0|1)/devices/wb-gpio/controls/A<N>_OUT - дискретное состояние выхода (1 - замкнут на GND, 0 - разомкнут)Выходы A1 - A4 управляются через следующие MQTT-топики:
/devices/wb-gpio/controls/A<N>_OUT/on - 1 - замкнуть на GND, 0 - разомкнуть.Где N - номер выхода, 1 - 4.
Пример чтения измеренного аналогового значения напряжения входа A1 (входы A2 - A4 читаются аналогично):
В прототипе, на вкладке MQTT, заводим переменную драйвера MQTT
Заполняем следующие поля:
/devices/wb-adc/controls/A1<IP-АДРЕС-КОНТРОЛЛЕРА>Сохраняем прототип, выполняем сборку
Здесь мы читаем в переменную измеренное аналоговое значение напряжения на входе A1.
Пример чтения измеренного дискретного значения напряжения входа A1:
В прототипе, на вкладке MQTT, заводим переменную драйвера MQTT
Заполняем следующие поля:
/devices/wb-gpio/controls/A1_IN<IP-АДРЕС-КОНТРОЛЛЕРА>Сохраняем прототип, выполняем сборку
Здесь мы читаем в переменную измеренное дискретное значение напряжения на входе A1 (1, если на входе есть напряжение, иначе - 0).
Пример управления состоянием выхода A1:
В прототипе, на вкладке MQTT, заводим переменную драйвера MQTT
Заполняем следующие поля:
/devices/wb-gpio/controls/A1_OUT/on<IP-АДРЕС-КОНТРОЛЛЕРА>Сохраняем прототип, выполняем сборку
Запись 1 в переменную замыкает выход на GND.
Запись 0 в переменную размыкает выход.